Code
# Carga de paquetes
library(tidyverse)
library(plotly)
library(DT)
library(sf)
library(rgdal)
library(raster)
library(terra)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(viridisLite)El siguiente documento se desarolla en tres contenidos relacionados a la riqueza de orquídeas que hay en Costa Rica: Mapa de riqueza de especies de orquídeas en áreas de conservación, gráfico de barras de la riqueza y gráfico de barras de cantidad de registros de presencia por las 10 especies más relevantes.
El documento cuenta con dos tipos de datos: Áreas de conservación de Costa Rica en Web Feature Service (WFS) publicado por el Sistema Nacional de Áreas de Conservación (Sinac), el cual nos ayuda a tener la ubicación en un mapa de la delimitación de las diez áreas de conservación que existen en Costa Rica. El otro dato utilizado es:Registros de presencia de orquídeas de Costa Rica obtenidos a través de una consulta al portal de datos de GBIF.
# Carga de paquetes
library(tidyverse)
library(plotly)
library(DT)
library(sf)
library(rgdal)
library(raster)
library(terra)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(viridisLite)# Carga de datos de área de conservación
areasconservacion <-
st_read(
dsn = "M:/Documentos Mónica/UCR/Geografía/I Semestre 2023/Procesamiento de Datos Geo/Tareas/Tarea 03/areas_conservacion_simp_10m.geojson",
quiet = TRUE
) |>
st_transform(4326) # reproyección a WGS84# Carga de datos de orquídeas de Costa Rica
orquideas <-
st_read(
"M:/Documentos Mónica/UCR/Geografía/I Semestre 2023/Procesamiento de Datos Geo/Tareas/Tarea 03/orquideas.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude", # columna de longitud decimal
"Y_POSSIBLE_NAMES=decimalLatitude" # columna de latitud decimal
),
quiet = TRUE
)
# Asignación del CRS WGS84
st_crs(orquideas) <- 4326# Unión espacial de orquídeas y áreas de conservación (solo la columna objectid),
# mediante el predicado st_within().
# Como resultado, cod_provin se une al conjunto de datos de viperidos.
orquideas_union_areasconservacion <-
st_join(
x = orquideas,
y = dplyr::select(areasconservacion, objectid),
join = st_within
)
# Despliegue de los datos unidos de orquídeas y la columna objetid de areas de conservación
orquideas_union_areasconservacion |>
st_drop_geometry() |>
dplyr::select(species, locality, objectid) |>
datatable(
colnames = c("Especie", "Localidad", "Código área de conservación"),
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)# Conteo de la cantidad de especies de orquídeas en las áreas de conservación
riqueza_especies_orquideas_areas_conservacion <-
orquideas_union_areasconservacion |>
st_drop_geometry() |>
group_by(objectid) |>
summarize(riqueza_especies_orquideas = n_distinct(species, na.rm = TRUE))
# Despliegue de la cantidad de especies de orquídeas en cada área de conservación
riqueza_especies_orquideas_areas_conservacion |>
arrange(desc(riqueza_especies_orquideas)) |>
datatable(
colnames = c("Código de área de conservación", "Riqueza de especies de orquídeas"),
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)# Unión (no espacial) de áreas de conservación y riqueza de especies de orquídeas
areas_conservacion_union_riqueza <-
left_join(
x = areasconservacion,
y = dplyr::select(riqueza_especies_orquideas_areas_conservacion, objectid, riqueza_especies_orquideas),
by = "objectid"
) |>
replace_na(list(riqueza_especies_orquideas = 0))
# Despliegue de los datos de riqueza de especies en áreas de conservación
areas_conservacion_union_riqueza |>
st_drop_geometry() |>
dplyr::select(nombre_ac, riqueza_especies_orquideas) |>
arrange(desc(riqueza_especies_orquideas)) |>
datatable(
colnames = c("Áreas de conservación", "Riqueza de especies de orquídeas"),
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)# Paleta de colores de riqueza de especies
colores_riqueza_especies <-
colorNumeric(
palette = "Reds",
domain = areas_conservacion_union_riqueza$riqueza_especies_orquideas,
na.color = "transparent"
)
# Paleta de colores de especies
colores_especies <- colorFactor(
palette = viridis(length(unique(orquideas$species))),
domain = orquideas$species
)
# Mapa leaflet
leaflet() |>
setView(
lng = -84.19452,
lat = 9.572735,
zoom = 7) |>
addTiles(group = "Mapa general (OpenStreetMap)") |>
addProviderTiles(
providers$Esri.WorldImagery,
group = "Imágenes satelitales (ESRI World Imagery)"
) |>
addPolygons(
data = areas_conservacion_union_riqueza,
fillColor = ~ colores_riqueza_especies(areas_conservacion_union_riqueza$riqueza_especies_orquideas),
fillOpacity = 0.8,
color = "black",
stroke = TRUE,
weight = 1.0,
popup = paste(
paste("<strong>nombre_ac:</strong>", areas_conservacion_union_riqueza$nombre_ac),
paste("<strong>Riqueza de especies:</strong>", areas_conservacion_union_riqueza$riqueza_especies_orquideas),
sep = '<br/>'
),
group = "Riqueza de especies de Orquídeas"
) |>
addScaleBar(
position = "bottomleft",
options = scaleBarOptions(imperial = FALSE)
) |>
addLegend(
position = "bottomleft",
pal = colores_riqueza_especies,
values = areas_conservacion_union_riqueza$riqueza_especies_orquideas,
group = "Riqueza de especies de Orquídeas",
title = "Riqueza de especies"
) |>
addCircleMarkers(
data = orquideas,
stroke = F,
radius = 4,
fillColor = ~colores_especies(orquideas$species),
fillOpacity = 1.0,
popup = paste(
paste0("<strong>Especie: </strong>", orquideas$species),
paste0("<strong>Localidad: </strong>", orquideas$locality),
paste0("<strong>Fecha: </strong>", orquideas$eventDate),
paste0("<strong>Fuente: </strong>", orquideas$institutionCode),
paste0("<a href='", orquideas$occurrenceID, "'>Más información</a>"),
sep = '<br/>'
),
group = "Registros de presencia"
) |>
addLegend(
position = "bottomleft",
pal = colores_especies,
values = orquideas$species,
title = "Especies",
group = "Registros de presencia"
) |>
addLayersControl(
baseGroups = c(
"Mapa general (OpenStreetMap)",
"Imágenes satelitales (ESRI World Imagery)"
),
overlayGroups = c(
"Riqueza de especies",
"Registros de presencia"
)
) |>
addResetMapButton() |>
addSearchOSM() |>
addMouseCoordinates() |>
addFullscreenControl() |>
hideGroup("Registros de presencia")